package com.xiaoh.dormitoryrepairreportbackend.annotation;

import com.xiaoh.dormitoryrepairreportbackend.constant.UserConstant;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 权限控制注解
 * 用于标记需要特定角色权限的方法
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequireRole {
    
    /**
     * 需要的用户类型
     * 默认为管理员权限
     */
    int[] value() default {UserConstant.UserType.ADMIN};
    
    /**
     * 是否允许用户操作自己的资源
     * 当设置为true时，用户可以操作自己的资源，即使没有指定的角色权限
     */
    boolean allowSelf() default false;
    
    /**
     * 当allowSelf为true时，用于指定目标用户ID的参数名
     * 默认为"id"，表示从请求参数中获取id字段作为目标用户ID
     */
    String targetUserIdParam() default "id";
}
